Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.05.2016, 14:03
Профессор
Отправить личное сообщение для Manyasha Посмотреть профиль Найти все сообщения от Manyasha
 
Регистрация: 21.09.2015
Сообщений: 196

Обработка большого количества web-страниц
Уважаемые программисты, всем добрый день!

Пытаюсь обработать аяксом большое количество страничек. Нужно всего лишь выцепить одну строчку с каждой странички.
Написала так:
for (var i = 1; i<=1000; i++){
	adr = "page-" + i + ".html";
	$.ajax({
		type: "GET",
		url: adr,
		success: function(html) {
			var txt = "Название странички:";
			$(html).find("div").each(function () {
				if($(this).text().indexOf(txt) == 0 && $(this).text().length > txt.length){
					console.log($(this).text().split(" ")[0].substring(txt.length+1));
				}
			});
		}
	});
}


Скрипт вроде работает правильно, но уж очень долго (страниц может быть и не одна тысяча).

Нарыла в гугле еще php-шную функцию file_get_contents($url);.
Но тратить еще 1-2 дня (php совсем не знаю) на написание еще одного варианта, который тоже не подойдет, очень не хочется.

Подскажите, пожалуйста, будет ли эта функция работать быстрее, чем мой код? Или задайте направление, что можно использовать для обработки такого количества страниц.
Ответить с цитированием
  #2 (permalink)  
Старый 20.05.2016, 15:26
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Manyasha,
php однозначно быстрее
Здесь у вас страницы грузятся с сервера на клиент, а там все прокрутится на сервере
Ответить с цитированием
  #3 (permalink)  
Старый 20.05.2016, 15:36
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Dilettante_Pro
php однозначно быстрее там все прокрутится на сервере
1000 страниц, это 1000 соединений, и не факт, что ответ будет мгновенный, так что и на сервере это будет задержка.
Ответить с цитированием
  #4 (permalink)  
Старый 20.05.2016, 16:40
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

laimas,
Судя по адресу
adr = "page-" + i + ".html";
это все на этом же сервере
Ответить с цитированием
  #5 (permalink)  
Старый 20.05.2016, 17:20
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Dilettante_Pro
это все на этом же сервере
И что, file_get_contents запросив одну страницу будет удерживать соединение открытым пока скрипт не разберет ее?
Каждый запрос по url, это открытие соединения (й) будет.
Ответить с цитированием
  #6 (permalink)  
Старый 20.05.2016, 17:30
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

laimas,
Но ведь все равно быстрее, чем с клиента через ajax c разбором на клиенте?
Я имею в виду, что и разбор файла должен производиться на сервере php-скриптом - на клиента возвращать только готовый список, не по одной странице - весь цикл на сервере

Последний раз редактировалось Dilettante_Pro, 20.05.2016 в 17:41.
Ответить с цитированием
  #7 (permalink)  
Старый 20.05.2016, 17:52
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Тут задержку в основном и будут давать соединения, ведь и сама страница может иметь запросы. Ну собственно вам же ничего не стоит запросить file_get_contents('http://javascript.ru/forum/') и увидеть результат отклика, и если будет отвечать так как у меня, иногда просто ждать не охота и обрываю соединение, то не сложно догадаться о результатах работы. )

Если ищется что-то, что не меняется во времени, то такие вещи делают разово, и планировщиком, после чего складывается в индекс.
Ответить с цитированием
  #8 (permalink)  
Старый 20.05.2016, 18:22
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

laimas,
Насколько я понял, это именно html-файлы, лежащие на сервере. И какие с ними будут проблемы?
Ответить с цитированием
  #9 (permalink)  
Старый 20.05.2016, 19:34
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Расширение в url как .html, еще не означает, что обращение к статичному документу, которому вообще-то не запрещается также делать запросы, а не к .php, .asp, и т.п. Так что трудно сказать что там на самом деле. )
Ответить с цитированием
  #10 (permalink)  
Старый 20.05.2016, 21:31
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

Сообщение от Dilettante_Pro
php однозначно быстрее
не факт, смотря для каких задач node php speed test
аяксом у вас не получится получить большинство страниц, так как это будет считаться кросс доменным запросом
предполагаю самый быстрый вариант
wget search string
даже через exec
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ajax передача большого количества данных diakon AJAX и COMET 3 29.05.2015 13:23
Обработка неизвестного количества input Daniel93 jQuery 21 20.03.2015 13:35
Последние книги по JavaScript! monolithed Учебные материалы 7 26.10.2010 19:40